ASP.Net এ ফাইল আপলোড করা একটি সাধারণ কার্যকলাপ, যা ব্যবহারকারীকে সার্ভারে ফাইল পাঠানোর অনুমতি দেয়। ASP.Net Core এবং ASP.Net MVC উভয় ক্ষেত্রেই ফাইল আপলোডের জন্য আলাদা আলাদা পদ্ধতি রয়েছে। এখানে আমরা ASP.Net MVC এবং ASP.Net Core উভয়ের জন্য ফাইল আপলোডের প্রক্রিয়া ব্যাখ্যা করব।
ASP.Net Core অ্যাপে ফাইল আপলোড করার জন্য IFormFile ইন্টারফেস ব্যবহার করা হয়। এটি একটি ইনপুট ফাইল দ্বারা আপলোড হওয়া ফাইলের মেটাডাটা এবং কন্টেন্ট ধারণ করে। ASP.Net Core এ ফাইল আপলোড করার জন্য কিছু নির্দিষ্ট ধাপ অনুসরণ করতে হবে।
ফাইল আপলোডের জন্য একটি ফর্ম তৈরি করতে হবে যেখানে ফাইল ইনপুট ফিল্ড থাকবে। এখানে enctype="multipart/form-data" অ্যাট্রিবিউট অবশ্যই নির্দিষ্ট করতে হবে, কারণ এটি ফাইল ডেটা পাঠাতে সাহায্য করে।
<form method="post" enctype="multipart/form-data">
<div>
<label for="file">Upload File:</label>
<input type="file" name="file" id="file" />
</div>
<button type="submit">Upload</button>
</form>
এখন কন্ট্রোলারে ফাইলটি গ্রহণ করার জন্য IFormFile ব্যবহার করতে হবে। ফাইলটি গ্রহণ করার পর, আপনি এটি সার্ভারে স্টোর করতে পারেন বা অন্য কোন কাজ করতে পারেন।
[HttpPost]
public async Task<IActionResult> UploadFile(IFormFile file)
{
if (file != null && file.Length > 0)
{
var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "uploads", file.FileName);
// ফাইল সংরক্ষণ
using (var stream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
return Content("File uploaded successfully!");
}
return Content("No file selected.");
}
এখানে:
wwwroot/uploads/
ডিরেক্টরিতে সেভ করা হয়েছে।ASP.Net MVC তে ফাইল আপলোড করার প্রক্রিয়া খুবই সাদামাটা, তবে এখানে কিছু অতিরিক্ত কনফিগারেশন থাকতে পারে।
ASP.Net MVC তেও HTML ফর্মের মধ্যে enctype="multipart/form-data" সেট করা প্রয়োজন।
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div>
<label for="file">Upload File:</label>
<input type="file" name="file" id="file" />
</div>
<button type="submit">Upload</button>
}
এখন কন্ট্রোলারে HttpPostedFileBase ব্যবহার করে ফাইলটি গ্রহণ করতে হবে।
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var filePath = Path.Combine(Server.MapPath("~/Uploads"), file.FileName);
// ফাইল সংরক্ষণ
file.SaveAs(filePath);
return Content("File uploaded successfully!");
}
return Content("No file selected.");
}
এখানে:
Server.MapPath("~/Uploads")
ব্যবহার করে আপলোড পাথ তৈরি করা হয়েছে।ফাইল আপলোডের সময় কিছু সীমাবদ্ধতা থাকতে পারে যেমন, ফাইলের আকার বা ফাইলের ধরন ইত্যাদি। এসব কনফিগারেশন web.config (ASP.Net MVC) বা Startup.cs (ASP.Net Core) ফাইলে নির্ধারণ করা যায়।
ASP.Net Core এ ফাইল আপলোডের জন্য Startup.cs ফাইলে সাইজ সীমাবদ্ধতা নির্ধারণ করা যায়।
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
// ফাইল সাইজ সীমাবদ্ধতা সেট করা
services.Configure<FormOptions>(options =>
{
options.MultipartBodyLengthLimit = 104857600; // 100MB
});
}
ASP.Net MVC তে, web.config ফাইলে ফাইল সাইজ সীমাবদ্ধতা নির্ধারণ করা যায়।
<configuration>
<system.web>
<httpRuntime maxRequestLength="1048576" />
</system.web>
</configuration>
এখানে, maxRequestLength="1048576"
মানে 1GB এর কাছাকাছি ফাইল সাইজ।
ফাইল টাইপ (যেমন, ছবি, পিডিএফ ইত্যাদি) চেক করা একটি ভাল প্র্যাকটিস, যা নিরাপত্তার জন্য প্রয়োজনীয়। আপনি ফাইলের এক্সটেনশন বা MIME টাইপ চেক করতে পারেন।
public bool IsValidFileType(string fileName)
{
var allowedExtensions = new[] { ".jpg", ".jpeg", ".png", ".pdf" };
var fileExtension = Path.GetExtension(fileName).ToLower();
return allowedExtensions.Contains(fileExtension);
}
এখানে, .jpg
, .jpeg
, .png
, এবং .pdf
ফাইল টাইপসমূহ অনুমোদিত।
ASP.Net এ ফাইল আপলোড একটি সাধারণ এবং কার্যকরী প্রক্রিয়া, যা ব্যবহারকারীকে সহজেই ফাইল আপলোড করতে সাহায্য করে। ASP.Net Core এবং ASP.Net MVC উভয় ক্ষেত্রে ফাইল আপলোডের প্রক্রিয়া আলাদা হলেও, মূল ধারণা এবং কোড স্ট্রাকচার একই রকম। সার্ভারে ফাইল সেভ করার আগে সেগুলোর সাইজ এবং টাইপ যাচাই করা খুবই গুরুত্বপূর্ণ, যাতে সিস্টেমে নিরাপত্তা বিঘ্নিত না হয়।
Read more